{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 LP - Ing\'e9nierie Logicielle - v20130110\par
\par
Sujet de TD not\'e9\par
\par
\par
OBJECTIF\par
---------------------------------------\par
En informatique, une "forge" d\'e9signe un syst\'e8me de gestion de d\'e9veloppement\par
collaboratif de logiciels (dixit Wikipedia).\par
\par
L'objectif de ce TD est de vous faire manipuler une forge et de mettre en oeuvre les\par
savoir-faire que vous avez acquis avec les TD pr\'e9c\'e9dents (subversion, ant, maven,\par
qualit\'e9...).\par
Tour \'e0 tour vous allez jouer le r\'f4le de l'administrateur cr\'e9ateur d'une forge, d'un\par
d\'e9veloppeur externe \'e0 un projet existant sous une forge, d'un d\'e9veloppeur enregistr\'e9\par
comme contributeur \'e0 un projet sous forge. Selon les \'e9tapes du TD vous travaillerez\par
donc sur la forge que vous allez cr\'e9er ou sur celle d'un de vos coll\'e8gues.\par
\par
Globalement vous allez \par
  * cr\'e9er et configurer un projet au sein d'une forge, \par
  * rendre une javadoc lisible au sein d'un d\'e9pot subversion\par
  * mettre en place un repository maven au sein d'un d\'e9pot subversion\par
  * interragir avec un logiciel de suivi de bugs \'e0 la fois en tant qu'utilisateur et\par
d\'e9veloppeur (d'abord demande d'une am\'e9lioration et d\'e9claration de bug avec\par
soumission d'un patch, ensuite teste d'un patch soumis par un tiers sur une\par
branche de votre d\'e9pot, fusion avec le tronc de votre projet, et cloture de\par
l'issue lev\'e9e)\par
\par
\par
PREREQUIS\par
---------------------------------------\par
Pour ce travail nous allons utilis\'e9 les outils fournis par la forge Google Code.\par
Cela peut requ\'e9rir la cr\'e9ation d'un compte GMail.\par
\par
\par
VOTRE TRAVAIL\par
---------------------------------------\par
\par
R\'e9digez un rapport d'exp\'e9riences (actions principales r\'e9alis\'e9es, lignes de commandes\par
ex\'e9cut\'e9es, difficult\'e9s rencontr\'e9s, solutions apport\'e9es...) sur les diff\'e9rentes\par
t\'e2ches d\'e9crites ci-dessous et r\'e9pondez en m\'eame temps aux questions que vous pouvez\par
trouver au sein de certaines t\'e2ches.\par
Vous livrerez une archive de votre workspace contenant le projet dont vous \'eates le\par
propri\'e9taire et celui sur lequel vous \'eates intervenu.\par
\par
\par
TACHE 1 : cr\'e9ation et configuration initiale de votre forge\par
---------------------------------------\par
Lire attentivement toutes les consignes avant de d\'e9marrer.\par
\par
Cr\'e9er un projet sur la Forge Google \'e0 partir du code source de votre projet\par
Operation manipul\'e9 lors du TD sur ant. Vous consulterez la proc\'e9dure d\'e9crite ici [1]\par
pour ce faire.\par
Le gestionnaire de version de code sera subversion.\par
\par
Vous allez utiliser le sujet d\'e9j\'e0 \'e9tudi\'e9 des Op\'e9rations Arithm\'e9tiques. \par
Cependant vous en utiliserez une version cod\'e9e avec la syntaxe Java4 (disponible sur \par
public-info).\par
\par
Avant d'importer votre code, r\'e9viser le "un peu" afin que la localisation des\par
fichiers (sources et g\'e9n\'e9r\'e9s) ne soit pas anarchique. Puis importer dans le d\'e9pot\par
les sources de votre projet Operation en glissant une erreur d'\'e9xecution dans le\par
code (collection non initialis\'e9e \'e0 laquelle on tente d'acc\'e9der, division par z\'e9ro,\par
d\'e9passement de tableau...). Pour rappel une erreur existait initialement dans le\par
code source. Si votre version est corrig\'e9e, modifier le code pour qu'une erreur se\par
produise \'e0 l'ex\'e9cution, dans une autre m\'e9thode que pythagore.\par
Rajouter une deuxi\'e8me erreur plus subtile et ne faisant surtout pas planter le\par
programme dans la m\'e9thode pythagore.\par
\par
Dans la javadoc, ins\'e9rer des commentaires demandant de tester 3 m\'e9thodes, dont\par
celles bugu\'e9es, mais sans pr\'e9ciser o\'f9 sont les bugs.\par
\par
Q : Quels "bons" principes de pr\'e9paration de votre projet, appliquez vous avant de\par
r\'e9aliser le premier import ?\par
\par
Le post [1] sur le blog vous informe comment cr\'e9er une liste de discussion et\par
associer votre forge avec un outil pour mesurer la fr\'e9quentation de votre site. Ces\par
t\'e2ches sont \par
optionnelles et pourront \'e9ventuellement \'eatre envisag\'e9s en fin de TD selon les \par
consignes donn\'e9es par votre charg\'e9 de TD.\par
\par
N'oubliez pas d'indiquer dans l'en-t\'eate de votre rapport, l'url pointant vers votre\par
forge.\par
\par
Une fois le TD termin\'e9 notez dans votre agenda de demander la suppression de cette\par
forge (menu Administrateur) au 30/09/2013.\par
\par
\par
TACHE 2 : mettre \'e0 disposition la javadoc de votre projet via le serveur d\'e9pot\par
subversion\par
---------------------------------------\par
Vous consulterez la proc\'e9dure d\'e9crite ici [3] pour ce faire. \par
\par
Q : Expliquez bri\'e8vemement en fran\'e7ais ce qu'il s'agit de faire.\par
\par
A noter que dans un premier temps il faudra g\'e9n\'e9rer cette javadoc (par exemple via\par
un export sous Eclipse ou bien via maven ou bien via votre script ant).\par
\par
\par
TACHE 3 : Interraction avec un logiciel de suivi de bugs "en tant que d\'e9veloppeur\par
externe"\par
---------------------------------------\par
D'abord r\'e9cup\'e9rer le nom d'un projet d'un de vos coll\'e8gues, trouver son projet,\par
r\'e9cup\'e9rer ses sources et essayer de les compiler et de les ex\'e9cuter.\par
\par
N'oubliez pas d'indiquer dans votre compte rendu le nom du propri\'e9taire et l'url de\par
son projet que vous r\'e9cup\'e9rez.\par
\par
Rager et d\'e9poser une "issue" demandant une am\'e9lioration quelconque (par exemple\par
l'ajout d'une documentation ou d'une javadoc plus fournie).\par
\par
Tester les 3 m\'e9thodes qui le r\'e9clament. Vous appliquerez les techniques de test vues\par
en cours (test structurel et fonctionnel) et veillerez \'e0 d\'e9passer 90 % de score de\par
mutation avec tous les op\'e9rateurs de mutation.\par
\par
Apr\'e8s avoir constat\'e9 les bugs dans le code, d\'e9posez une nouvelle issue signalant les\par
probl\'e8mes. Produire un patch et l'associer \'e0 votre issue.\par
\par
\par
TACHE 4 : Interraction avec un logiciel de suivi de bugs "en tant que d\'e9veloppeur\par
contributeur"\par
---------------------------------------\par
Apr\'e8s que l'on vous ait signal\'e9 les bugs dans les sources de votre projet et fait\par
part d'un patch pour le corriger, cr\'e9er une branche pour tester le patch. Vous\par
appliquerez les m\'e9thodes de test vues en cours.\par
\par
Si les tests sont probants fusionner avec le tronc et r\'e9pondre (\'e9ventuellement\par
fermer) les issues ouvertes.\par
\par
\par
TACHE 5 : Mettre en place un repository maven au sein d'un d\'e9pot subversion\par
---------------------------------------\par
Vous consulterez la proc\'e9dure d\'e9crite ici [4] pour se faire.\par
\par
A noter que dans un premier temps il faudra g\'e9n\'e9rer une archive jar de vos binaires\par
(par exemple via un export sous Eclipse ou bien via maven ou bien via votre script\par
ant).\par
\par
Vous en profiterez aussi pour placer ce jar dans le r\'e9pertoire download de votre\par
forge de fa\'e7on \'e0 ce qu'il soit accessible d\'e8s la page d'accueil de votre forge.\par
\par
Vous testerez la r\'e9cup\'e9ration automatique par Maven de la d\'e9pendance en d\'e9clarant\par
votre repository maven et la d\'e9pendance au sein d'un projet cr\'e9\'e9 pour l'occasion\par
(par exemple \'e0 partir d'un archetype maven).\par
\par
\par
\par
R\'c9F\'c9RENCES\par
---------------------------------------\par
[1] http://enicolashernandez.blogspot.com/2009/12/creer-un-projet-sous-googlecode.html\par
[2]\par
http://infoweb-ens.iut-nantes.univ-nantes.prive/~hernandez-n/3a.LP.GL/ant/projetOperation-tp.tar.gz\par
[3]\par
http://enicolashernandez.blogspot.com/2011/12/publier-une-javadoc-sous-forge-google.html\par
[4]\par
http://enicolashernandez.blogspot.fr/2011/12/ajouter-un-depot-repository-maven-votre.html\par
\par
\par
Compl\'e9ment d'information 1 :\par
\par
Vous trouverez des indications pour configurer Maven en fonction des proxy sur :\par
http://infoweb-ens/~hernandez-n/3a.LP.GL/subversion/\par
\par
L'essentiel de ces informations \'e9tant :\par
# configuration de client subversion sur le r\'e9seau cabl\'e9 de l'iut\par
# --------------------------------------\par
la DSI de l'universit\'e9 a effectu\'e9 r\'e9cement un changement de serveur\par
frontal utilis\'e9 par notre serveur svn, ce nouveau serveur r\'e9pondant en\par
ipv6 (ce qui n'est pas encore le cas pour le r\'e9seau p\'e9dagogique \'e0\par
l'iut) cela pose probleme (les postes linux disposent d'une adresse\par
ipv6 mais locale)\par
Pour vous connecter, le plus simple est d'utiliser le proxy de l'iut\par
(qui g\'e8re l'ipv6)\par
Chaque \'e9tudiant doit \'e9diter son ~/.subversion/servers et ajouter \'e0 la fin :\par
[global]\par
http-proxy-host = tabatha.iut-nantes.univ-nantes.prive\par
http-proxy-port = 3128\par
\par
# configuration de client subversion sur wifi\par
# --------------------------------------\par
[global]\par
http-proxy-host = cache.wifi.univ-nantes.fr\par
http-proxy-port = 3128\par
\par
# vous avez des soucis avec le gnome keyring qui vous emp\'e8che\par
d'acc\'e9der \'e0 votre d\'e9p\'f4t svn\par
# --------------------------------------\par
mv ~/.gnome2/keyrings  ~/.gnome2/keyrings.tmp\par
\par
\par
Compl\'e9ment d'information 2 :\par
Il faudra compiler proprement les sources java de votre projet pour mujava.\par
Par exemple :\par
javac -cp src\\com\\developpez\\rpouiller\\testsjunit4\\java4\\Operations.java -d classes src\\com\\developpez\\rpouiller\\testsjunit4\\java4\\Operations.java\par
}
 